public class Factory {
    // volatile保证可见性和禁止指令重排
    private static volatile Factory instance;

    // 私有构造方法防止外部实例化
    private Factory() {
        System.out.println("工厂实例被创建");
    }

    // 双重检查锁获取单例
    public static Factory getInstance() {
        if (instance == null) { // 第一次检查
            synchronized (Factory.class) {
                if (instance == null) { // 第二次检查
                    instance = new Factory();
                }
            }
        }
        return instance;
    }

    // 原有创建水果方法保持不变
    public Fruit CreateFruit(String Kind) {
        if (Kind.equals("A"))
            return new Apple();
        if (Kind.equals("B"))
            return new Banana();
        return null;
    }
}